home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / 051-060 / amok58 / qsort / qsort.def next >
Text File  |  1993-11-04  |  3KB  |  81 lines

  1. (*------------------------------------------------------------------)
  2.     :Program.    QSort (QuickSort-Algorithmus)
  3.     :Author.     Philippe Gressly (PHILU)
  4.     :Address.    Näfenhaus, CH-8926 Kappel a/Albis
  5.     :History     V0.99 (1.8.91)
  6.     :Update.
  7.     :Copyright.  PD
  8.     :Language.   Modula-II
  9.     :Translator. M2Amiga
  10.     :Imports.
  11.     :Support.
  12.     :Bugs.
  13.     :Contents.   Die Prozedur (QSort) zum sortieren von Arrays.
  14.     :Remark.
  15.     :Usage.      (zB. CLI-Befehle)
  16. (------------------------------------------------------------------*)
  17.  
  18. DEFINITION MODULE QSort;
  19.  
  20.  
  21.  
  22.    TYPE GREATERTHAN = PROCEDURE(LONGINT, LONGINT):BOOLEAN;
  23.                                (*   Nr1,     Nr2         *)
  24.  
  25.         (* Die Prozedur gibt TRUE zurück, wenn das Element an der Stelle
  26.          * Nr1 echt größer als das Element an der Stelle Nr2 ist.
  27.          *
  28.          * Beispiel:
  29.          * RETURN Array[Nr1] > Array[Nr2]
  30.          *
  31.          * Diese Prozedur muß selbst geschrieben werden.
  32.          *)
  33.  
  34.  
  35.  
  36.    TYPE SWAP        = PROCEDURE(LONGINT, LONGINT);
  37.                                (*   Nr1,     Nr2 *)
  38.  
  39.         (* Die Prozedur soll das Element an der Stelle Nr1 mit dem
  40.          * Element an der Stelle Nr2 vertauschen.
  41.          *
  42.          * Beispiel:
  43.          *  t := Array[Nr1];
  44.          *  Array[Nr1] := Array[Nr2];
  45.          *  Array[Nr2] := t;
  46.          *
  47.          * Auch diese Prozedur muß selber geschrieben werden.
  48.          *)
  49.  
  50.  
  51.  
  52. (*--V00.99--> P R O C E D U R E <------[1.8.91]------[Philu]------)
  53. | Name    : QSort
  54. | Input   : start, end: LONGINT; (* Woher bis wohin im Array soll
  55. |                                 * sortiert werden.
  56. |                                 *)
  57. |           ACHTUNG: "start" muß kleiner oder gleich "end" sein!!
  58. |                    Es wird im anderen Fall gar nichts ausgeführt.
  59. |                    Es wird aber nicht etwa von end bis start sortiert!
  60. |
  61. |           gt: GREATERTHAN; (* Prozedur, die die Elemente vergleicht *)
  62. |           swp: SWAP      ; (* Prozedur, die die Elemente vertauscht *)
  63. | Proc    : Die Procedur sortitert alles. Jedoch die beiden Proceduren
  64. |           zum Vergleichen und zum Vertauschen von Elementen müssen
  65. |           selbst geschrieben werden. Somit kann der QSort auch
  66. |           beliebige Arrays of Strings, oder of Records sortieren.
  67. | Global  : none
  68. | Special :
  69. | Example : Es liegt das Beispiel QSortTest bei.
  70. | Update  :
  71. | Bugs    : noch keine aufgetreten.
  72. | See also:
  73. +------------------------------------------------------------------*)
  74. PROCEDURE QSort(start, end: LONGINT; gt: GREATERTHAN; swp: SWAP);
  75.  
  76.  
  77.  
  78.  
  79. END QSort.def
  80.  
  81.